/**
 * @file gjson_object.h
 * @brief json object 
 * @author JakeYang <add358@gmail.com>
 * @version 0.1
 * @date 2016-03-01
 */

#ifndef __GJSON_OBJECT_H__
#define __GJSON_OBJECT_H__

#include "gjson_base.h"
#include "gjson_value.h"

G_BEGIN_DECLS

typedef GHashTable GJsonObject;

/**
 * @brief g_json_parse_object   解析对象
 * @param data                  json数据
 * @return  成功返回解析对象，失败返回NULL
 */
extern GJsonObject *g_json_object_parse(GJsonData *d);

/**
 * @brief g_json_object_free    释放GJsonObject数据资源
 * @param obj                   指向GJsonObject类型数据
 */
extern void g_json_object_free(GJsonObject *obj);

/**
 * @brief g_json_object_print   打印GJsonObject数据
 * @param obj                   指向GJsonObject类型数据
 * @param t                     保存打印的信息
 */
extern void g_json_object_print(GJsonObject *obj, GJsonText *t);

/**
 * @brief g_json_object_get_value   获取GJsonObject里对应的键值
 * @param obj                       指向GJsonObject类型数据
 * @param str                       键的名称
 * @param type                      要获取的值的类型
 * @param err                       保存出错信息，可传递NULL
 * @return 成功返回键值数据(GJsonValue)， 失败返回NULL
 */
extern GJsonValue *g_json_object_get_value(GJsonObject *obj, const gchar *str, GJsonType type, GError **err);

G_END_DECLS

#endif /* end of include guard */
